'''
1.使用余弦相似度：
余弦相似度是通过计算两个向量之间的角度和它们的长度来度量的。值域为[-1,1]。值为1表示两个向量完全相同，值为-1表示两个向量完全相反。
Python代码：
'''
import numpy as np

a = np.array([1, 2, 3])
b = np.array([2, 3, 4])


def cosine_similarity(a, b):
    a_norm = np.linalg.norm(a)
    b_norm = np.linalg.norm(b)
    common_norm = a_norm * b_norm
    similarity = np.dot(a, b) / (common_norm + 1e-5)
    return similarity


print("余弦相似度:",cosine_similarity(a, b))


'''
2.使用欧氏距离：
欧氏距离是最常见的一种距离定义，它是整个向量空间的标准距离公式。
Python代码：
'''
def euclidean_distance(a, b):
    distance = np.linalg.norm(a - b)
    return distance



print("欧氏距离:",euclidean_distance(a, b))

'''
3.使用相关系数：
相关系数是衡量两个变量间关系密切程度的方法，值域为[-1,1]。值为1表示完全正相关，值为-1表示完全负相关，值为0表示没有相关关系。
Python代码：
'''
from scipy.stats import pearsonr

def correlation_coefficient(a, b):
    correlation, p = pearsonr(a, b)
    return correlation


print("相关系数:",correlation_coefficient(a, b))

'''
4.使用曼哈顿距离：
曼哈顿距离是向量空间中的一种距离定义，它是对向量元素间差异的绝对值之和。
Python代码：
'''
def manhattan_distance(a, b):
    distance = np.abs(a - b).sum()
    return distance



print("曼哈顿距离:",manhattan_distance(a, b))

'''
5.使用切比雪夫距离：
切比雪夫距离是向量空间中的一种距离定义，它是向量元素间差异的最大值。
Python代码：
'''
def chebyshev_distance(a, b):
    distance = np.abs(a - b).max()
    return distance


print("切比雪夫:",chebyshev_distance(a, b))